chrome-tab
Sugar for Chrome's remote debugging protocol.
Why
Phantom's cool but it's hard to get your hands on a binary. Also why not just use a real browser?
How
JSON-RPC over a WebSocket. This is the same interface devtools uses to talk to Chrome - check out the API here.
Example
var Tab = require('./')
var Emitter = require('events')
var tab = new Tab()
process.on('SIGINT', () => {
tab.close(process.exit)
})
tab.open(err => {
if (err) throw err
var events = new Emitter()
tab.defaultMethod = (name, params) => {
events.emit(name, params)
}
tab.call('Page.enable', err => {})
tab.call('Network.enable', err => {})
events.once('Page.frameNavigated', (params) => {
console.log('Page.frameNavigated', params)
tab.call('Runtime.evaluate', {
expression: 'document.documentElement.outerHTML',
returnByValue: true
}, (err, result) => {
console.log(result.result.value)
})
})
tab.call('Page.navigate', {
url: 'https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/websocket-server'
}, err => {})
})
License
Public domain